#include<bits/stdc++.h> usingnamespace std; intmain() { int n, m; cin >> n >> m; int weight[n + 1]; int sum = 0; for (int i = 1; i <= n; i++) { cin >> weight[i]; sum += weight[i]; } int up[n]; for (int i = 1; i < n; i++) cin >> up[i]; for (int i = 0; i < m; i++) { int val; cin >> val; if (val == 1) for (int j = 2; j <= n; j++) cout << j << ' '; else for (int j = 2; j <= val; j++) cout << j << ' '; cout << endl; } }
intmain() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { longlong tmp; cin >> tmp; maps.insert(pair<int, node>(i, node(tmp))); all_weight += tmp; } for (int i = 2; i <= n; i++) { int tmp_p; cin >> tmp_p; maps[i].upper = tmp_p; maps[tmp_p].ss.insert(pair<int, node>(i, maps[i])); } // 维护权重和 for (int i = 1; i <= n; i++) { queue<int> q; q.push(i); while (q.size() != 0) { int tt = q.front(); q.pop(); for (auto &j : maps[tt].ss) { maps[i].s_w += j.second.weight; maps[i].num_s++; q.push(j.first); } } } all_node = n; for (int i = 0; i < m; i++) { int val; cin >> val;